﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using GameUtils.Input;
using GameUtils.GameManager;

namespace ThouShaltNotBrick.Logic.GameStates
{
    public interface IGameState
    {
        #region Methods
        void Initialize(IGameManager pGameManager);
        void Destroy();

        void Start(GameStateChangeData pChangeData);
        void Stop();
        void Resume(GameStateChangeData pChangeData);
        void Pause();

        void HandleInput(GameTime pGameTime);
        void Update(GameTime pGameTime);
        void Draw(GameTime pGameTime);

        #region Keyboard
        void OnKeyDown(KeyEventArgs pArgs);
        void OnKeyUp(KeyEventArgs pArgs);
        void OnChar(CharacterEventArgs pArgs);
        #endregion

        #region Mouse
        void OnLeftButtonDown(MouseEventArgs pArgs);
        void OnLeftButtonUp(MouseEventArgs pArgs);
        void OnMiddleButtonDown(MouseEventArgs pArgs);
        void OnMiddleButtonUp(MouseEventArgs pArgs);
        void OnRightButtonDown(MouseEventArgs pArgs);
        void OnRightButtonUp(MouseEventArgs pArgs);
        void OnMouseMove(MouseEventArgs pArgs);
        void OnMouseWheel(MouseEventArgs pArgs);
        #endregion
        #endregion
    }
}